<?php
App::uses('AppModel', 'Model');
/**
 * TagsCategory Model
 *
 * @property LivresTagsCategory $LivresTagsCategory
 */
class TagsCategory extends AppModel {

/**
 * Display field
 *
 * @var string
 */
	public $displayField = 'libelle';
	
    public $actsAs = array(
        'Translate' => array(
            'libelle'
        )
    );
	// public $virtualFields = array(
		// 'livres_count' => 'COUNT(LivresTagsCategory.tags_category_id)'
	// );
	//The Associations below have been created with all possible keys, those that are not needed can be removed

/**
 * hasMany associations
 *
 * @var array
 */
	public $hasMany = array(
		'LivresTagsCategory' => array(
			'className' => 'LivresTagsCategory',
			'foreignKey' => 'tags_category_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		)
	);
	
/**
 * getPopulaires method
 * Retourne les auteurs populaires,
 * Dans cette version du site on retourne les auteurs qui ont le plus de livres.
 * Dans une version plus évoluée, on pourrait retourner les auteurs 
 * dont les livres ont les meilleurs notes par exemeple.
 * @param limit string : le nombre max d'auteurs à retourner
 * @return auteur array : les auteurs
 */	
	public function getPopulaires($limit='15'){

		$nombre_livres_categories = $this->query(
		'select TagsCategory.nombre,  TagsCategory.id from (select tags_categories.id as id, 
			tags_categories.libelle as libelle, count(livres_tags_categories.id) as nombre from tags_categories, livres_tags_categories where 
			livres_tags_categories.tags_category_id = tags_categories.id 
			group by tags_categories.id order by nombre DESC) as TagsCategory
			LIMIT '.$limit
		);
		$categories_ids = array();
		foreach($nombre_livres_categories as $cat){
			$categories_ids[] = $cat['TagsCategory']['id'];
		}
		$categories_traduites = $this->find('list',array(
			'fields'=>array('libelle'),
			'conditions'=>array('TagsCategory.id'=>$categories_ids)
		));
		$categories = array();
		foreach($nombre_livres_categories as $cat){
			/* Si il existe une traduction de la catégorie */
			if(isset($categories_traduites[$cat['TagsCategory']['id']])){
				$cat['TagsCategory']['libelle'] = $categories_traduites[$cat['TagsCategory']['id']];
				$categories[] = $cat;
			}
		}

		// if($limit) $query .= ' LIMIT '.$limit;
		
		$categories = array_replace_recursive($categories,$nombre_livres_categories);		

		return $categories;
	}	
	
}
